package com.zh.common.net.http

import com.zh.common.base.bean.BaseResponse
import com.zh.common.net.RetrofitManager
import com.zh.config.ZjConfig
import okhttp3.MultipartBody
import okhttp3.RequestBody
import okhttp3.ResponseBody
import retrofit2.http.*


/**
 * 实例化网络请求
 * hostUrl 域名, 默认ZjConfig.base_url，需要修改传入新的域名（新的每次都传）
 */
fun netService(hostUrl: String = ZjConfig.base_url): INetService =
    RetrofitManager.apiService(INetService::class.java, hostUrl)

/**
 * 网络服务标记接口
 */
interface INetService {
    /**
     * 文件下载
     *
     * @param fileUrl
     * @return
     */
    @Streaming
    @GET
   suspend fun download(@Url fileUrl: String): BaseResponse<ResponseBody>

    /**
     * 获取阿里云OSS文件上传链接
     *
     * @param suffix      文件后缀
     * @param contentType 文件类型
     * @return
     */
    @GET("/api/base/app/getOSSUploadUrl/{suffix}")
    suspend fun getOSSUploadUrl(
        @Path("suffix") suffix: String,
        @Query("contentType") contentType: String,
        @Query("sessionId") sessionId: String
    ): BaseResponse<OSSUploadUrlBean>

    /**
     * 上传文件
     *
     * @return
     */
    @PUT
    suspend fun upLoadFile(
        @Header("Content-Type") contentType: String,
        @Url url: String,
        @Body description: RequestBody
    ): BaseResponse<String>

    /**
     * 上传图片
     */
    @Multipart
    @POST("api/api/upload")
    suspend fun uploadFile(
        @Part file: MultipartBody.Part,
        @Query("type") type: String
    ): BaseResponse<String?>
}